Clustered storage systems allow multiple storage computers and other storage devices to work together in a coherent storage system. Clustered storage systems utilize various configurations of multiple storage controllers, physical storage devices, processors, memory, and other resources to increase the performance of the storage system as well as provide redundancy and high availability.
One such configuration is a high availability cluster with two redundant storage controllers: a primary controller and a secondary controller, which share a set of physical storage devices, such as a disk array. In this configuration, the primary controller may field input/output (“I/O”) operations against the array while the secondary controller operates as a “hot-spare” to the primary controller. Components or modules of the storage stack on the primary controller may share data and metadata regarding active transactions, logical volumes, etc., with their counterparts on the secondary controller in order to keep the secondary controller in the hot-spare state. In the event of a failure of the primary controller, the secondary controller has all the information required to take over servicing I/Os against the array. Technologies such multipath I/O (“MPIO”) may make such node-failovers transparent to the initiators. However, in such a configuration, the additional processing power of the secondary controller generally goes unutilized while the controller is in the hot-spare state.
Another configuration may involve the two storage controllers each fielding I/O operations for a portion of the disk array. The disks of the array may be logically grouped into two storage groups, with each storage controller acting as a primary controller for one of the storage groups, while also acting as a hot-spare to the other storage controller for the other storage group. In this configuration, because each controller acts as both a primary controller and a secondary controller or hot-spare, the components of the storage stack on the storage controllers may be required to both send and receive data and metadata with their counterparts on the other controller.
It is with respect to these considerations and others that the disclosure made herein is presented.